#Boa:Frame:PaginaUsuario

import wx
import Frame_CriarEvento
from Class_GerenciadorEvento import *
from Class_ConexaoEventoInterface import *


def create(parent, Usuario):
    return PaginaUsuario(parent, Usuario)

[wxID_PAGINAUSUARIO, wxID_PAGINAUSUARIOBUTTON1, wxID_PAGINAUSUARIOBUTTON2, 
 wxID_PAGINAUSUARIOBUTTON3, wxID_PAGINAUSUARIOBUTTON4, 
 wxID_PAGINAUSUARIOLISTCTRL1, wxID_PAGINAUSUARIOSTATICBOX1, 
 wxID_PAGINAUSUARIOSTATICBOX2, wxID_PAGINAUSUARIOSTATICLINE1, 
 wxID_PAGINAUSUARIOSTATICTEXT1, wxID_PAGINAUSUARIOSTATICTEXT2, 
 wxID_PAGINAUSUARIOSTATICTEXT3, wxID_PAGINAUSUARIOSTATICTEXT4, 
 wxID_PAGINAUSUARIOSTATICTEXT5, wxID_PAGINAUSUARIOSTATICTEXT6, 
 wxID_PAGINAUSUARIOWINDOW1, wxID_PAGINAUSUARIOWINDOW2, 
] = [wx.NewId() for _init_ctrls in range(17)]

class PaginaUsuario(wx.Frame):
    def _init_coll_listCtrl1_Columns(self, parent):
        # generated method, don't edit

        parent.InsertColumn(col=0, format=wx.LIST_FORMAT_LEFT, heading=u'Id',
              width=-1)
        parent.InsertColumn(col=1, format=wx.LIST_FORMAT_LEFT, heading=u'Nome',
              width=-1)
        parent.InsertColumn(col=2, format=wx.LIST_FORMAT_LEFT, heading=u'Data',
              width=-1)
        parent.InsertColumn(col=3, format=wx.LIST_FORMAT_LEFT, heading=u'Hora',
              width=-1)

    def _init_ctrls(self, prnt):
        # generated method, don't edit
        wx.Frame.__init__(self, id=wxID_PAGINAUSUARIO, name=u'PaginaUsuario',
              parent=prnt, pos=wx.Point(521, 164), size=wx.Size(694, 525),
              style=wx.DEFAULT_FRAME_STYLE, title='Frame1')
        self.SetClientSize(wx.Size(686, 492))
        self.Center(wx.BOTH)
        self.SetFont(wx.Font(10, wx.SWISS, wx.NORMAL, wx.NORMAL, False,
              u'Tahoma'))
        self.SetBackgroundColour(wx.Colour(247, 247, 247))

        self.window1 = wx.Window(id=wxID_PAGINAUSUARIOWINDOW1, name='window1',
              parent=self, pos=wx.Point(32, 104), size=wx.Size(256, 360),
              style=0)
        self.window1.SetBackgroundColour(wx.Colour(239, 239, 239))

        self.window2 = wx.Window(id=wxID_PAGINAUSUARIOWINDOW2, name='window2',
              parent=self, pos=wx.Point(312, 104), size=wx.Size(360, 228),
              style=0)
        self.window2.SetBackgroundColour(wx.Colour(239, 239, 239))

        self.staticBox1 = wx.StaticBox(id=wxID_PAGINAUSUARIOSTATICBOX1,
              label=u'Informa\xe7\xf5es do Usu\xe1rio', name='staticBox1',
              parent=self.window1, pos=wx.Point(16, 8), size=wx.Size(224, 288),
              style=0)
        self.staticBox1.SetFont(wx.Font(10, wx.SWISS, wx.NORMAL, wx.NORMAL,
              False, u'Tahoma'))

        self.staticBox2 = wx.StaticBox(id=wxID_PAGINAUSUARIOSTATICBOX2,
              label=u'Eventos que organizo...', name='staticBox2',
              parent=self.window2, pos=wx.Point(8, 8), size=wx.Size(328, 160),
              style=0)
        self.staticBox2.SetFont(wx.Font(10, wx.SWISS, wx.NORMAL, wx.NORMAL,
              False, u'Tahoma'))

        self.staticText1 = wx.StaticText(id=wxID_PAGINAUSUARIOSTATICTEXT1,
              label=u'Baco Event Manager', name='staticText1', parent=self,
              pos=wx.Point(167, 18), size=wx.Size(352, 51), style=0)
        self.staticText1.SetFont(wx.Font(26, wx.SWISS, wx.NORMAL, wx.NORMAL,
              False, u'Jokerman'))
        self.staticText1.Center(wx.HORIZONTAL)

        self.button1 = wx.Button(id=wxID_PAGINAUSUARIOBUTTON1,
              label=u'Editar Informa\xe7\xf5es', name='button1',
              parent=self.window1, pos=wx.Point(60, 312), size=wx.Size(136, 32),
              style=0)
        self.button1.SetFont(wx.Font(10, wx.SWISS, wx.NORMAL, wx.NORMAL, False,
              u'Tahoma'))
        self.button1.Center(wx.HORIZONTAL)
        self.button1.Bind(wx.EVT_BUTTON, self.OnButton1Button,
              id=wxID_PAGINAUSUARIOBUTTON1)

        self.button2 = wx.Button(id=wxID_PAGINAUSUARIOBUTTON2,
              label=u'Criar Novo Evento', name='button2', parent=self.window2,
              pos=wx.Point(40, 184), size=wx.Size(120, 32), style=0)
        self.button2.SetFont(wx.Font(10, wx.SWISS, wx.NORMAL, wx.NORMAL, False,
              u'Tahoma'))
        self.button2.Bind(wx.EVT_BUTTON, self.OnButton2Button,
              id=wxID_PAGINAUSUARIOBUTTON2)

        self.button3 = wx.Button(id=wxID_PAGINAUSUARIOBUTTON3,
              label=u'Excluir Evento', name='button3', parent=self.window2,
              pos=wx.Point(208, 184), size=wx.Size(120, 32), style=0)
        self.button3.SetFont(wx.Font(10, wx.SWISS, wx.NORMAL, wx.NORMAL, False,
              u'Tahoma'))
        self.button3.Bind(wx.EVT_BUTTON, self.OnButton3Button,
              id=wxID_PAGINAUSUARIOBUTTON3)

        self.staticText2 = wx.StaticText(id=wxID_PAGINAUSUARIOSTATICTEXT2,
              label=u'<Nome do Usu\xe1rio Aqui>', name='staticText2',
              parent=self.window1, pos=wx.Point(31, 40), size=wx.Size(162, 16),
              style=0)
        self.staticText2.SetFont(wx.Font(10, wx.SWISS, wx.NORMAL, wx.BOLD,
              False, u'Tahoma'))

        self.staticText3 = wx.StaticText(id=wxID_PAGINAUSUARIOSTATICTEXT3,
              label=u'<idade>', name='staticText3', parent=self.window1,
              pos=wx.Point(32, 88), size=wx.Size(57, 16), style=0)
        self.staticText3.SetFont(wx.Font(10, wx.SWISS, wx.NORMAL, wx.BOLD,
              False, u'Tahoma'))

        self.staticText4 = wx.StaticText(id=wxID_PAGINAUSUARIOSTATICTEXT4,
              label=u'<email do usu\xe1rio aqui>', name='staticText4',
              parent=self.window1, pos=wx.Point(33, 136), size=wx.Size(158, 16),
              style=0)
        self.staticText4.SetFont(wx.Font(10, wx.SWISS, wx.NORMAL, wx.BOLD,
              False, u'Tahoma'))

        self.staticText5 = wx.StaticText(id=wxID_PAGINAUSUARIOSTATICTEXT5,
              label=u'<N\xfamero de Eventos Criados>', name='staticText5',
              parent=self.window1, pos=wx.Point(28, 232), size=wx.Size(199, 16),
              style=0)
        self.staticText5.SetFont(wx.Font(10, wx.SWISS, wx.NORMAL, wx.BOLD,
              False, u'Tahoma'))
        self.staticText5.Center(wx.HORIZONTAL)

        self.staticText6 = wx.StaticText(id=wxID_PAGINAUSUARIOSTATICTEXT6,
              label=u'<Login do Usu\xe1rio Aqui>', name='staticText6',
              parent=self.window1, pos=wx.Point(32, 184), size=wx.Size(161, 16),
              style=0)
        self.staticText6.SetFont(wx.Font(10, wx.SWISS, wx.NORMAL, wx.BOLD,
              False, u'Tahoma'))

        self.button4 = wx.Button(id=wxID_PAGINAUSUARIOBUTTON4, label=u'Log Off',
              name='button4', parent=self, pos=wx.Point(456, 392),
              size=wx.Size(88, 40), style=0)
        self.button4.Bind(wx.EVT_BUTTON, self.OnButton4Button,
              id=wxID_PAGINAUSUARIOBUTTON4)

        self.staticLine1 = wx.StaticLine(id=wxID_PAGINAUSUARIOSTATICLINE1,
              name='staticLine1', parent=self, pos=wx.Point(39, 74),
              size=wx.Size(608, 2), style=0)
        self.staticLine1.Center(wx.HORIZONTAL)

        self.listCtrl1 = wx.ListCtrl(id=wxID_PAGINAUSUARIOLISTCTRL1,
              name='listCtrl1', parent=self.window2, pos=wx.Point(24, 32),
              size=wx.Size(296, 120), style=wx.LC_REPORT)
        self._init_coll_listCtrl1_Columns(self.listCtrl1)
        self.listCtrl1.Bind(wx.EVT_LIST_ITEM_ACTIVATED,
              self.OnListCtrl1ListItemActivated,
              id=wxID_PAGINAUSUARIOLISTCTRL1)

    def __init__(self, parent, Usuario):
        self._init_ctrls(parent)
        self.RedimensionarColunas(-2)
        self.Usuario = Usuario
        self.Gerenciador = GerenciadorEvento()
        
        #Carrega as informacoes do usuario no Frame
        self.staticText2.SetLabel(Usuario.GetNome() + ' ' + Usuario.GetSobrenome())
        self.staticText3.SetLabel(str(Usuario.GetDataNasc()))
        self.staticText4.SetLabel(Usuario.GetContato().GetEmail())
        self.staticText5.SetLabel(('%s - %s')%(Usuario.GetEndereco().GetCidade(), Usuario.GetEndereco().GetEstado()))
        self.staticText6.SetLabel(Usuario.GetLogin())
        
        #Carregar Eventos na "self.ListBox1"
        self.ListaEventos = self.Gerenciador.PesquisarEventosPorUsuario(self.Usuario)
        self.PreencherEventosNaLista(self.ListaEventos)
        
    #Carrega os Todos os Eventos na lista
    def PreencherEventosNaLista(self, ListaEventos):
        
        lista = self.listCtrl1
        #Pega os dados de da ListaEventos e joga na tabela
        for dados in ListaEventos:
            
            index = lista.InsertStringItem(sys.maxint,'0')
            lista.SetStringItem(index, 0, str(dados[0]))
            lista.SetStringItem(index, 1, str(dados[1]))
            lista.SetStringItem(index, 2, str(dados[2]))
            lista.SetStringItem(index, 3, str(dados[3]))
        self.RedimensionarColunas(-2)

    #Funcao para redimensionar o tamanho das colunas de uma tabela
    def RedimensionarColunas(self, num):
        self.listCtrl1.SetColumnWidth(0, num)
        self.listCtrl1.SetColumnWidth(1, num)
        self.listCtrl1.SetColumnWidth(2, num)
        self.listCtrl1.SetColumnWidth(3, num)
        
    
    #Botao: Editar Perfil
    def OnButton1Button(self, event):
        import Frame_EditUsuario
        Frame_EditUsuario.create(None, self.Usuario).Show()
        self.Close()

    #Botao: Criar novo Evento
    def OnButton2Button(self, event):
        import Frame_CriarEvento
        Frame_CriarEvento.create(None, self.Usuario).Show()
        self.Close()

    #Botao: Excluir Evento
    def OnButton3Button(self, event):
        EventoSelecionado = self.PegarItemSelecionado()
        ID = EventoSelecionado.GetID()        
        excluir = self.Gerenciador.PesquisarEventoPorID(ID)
        print 'aaaaaaaaaa'
        excluir = excluir[0][0]
        print excluir
        self.Gerenciador.ExcluirEvento(excluir)

        

    #Botao: Log off
    def OnButton4Button(self, event):
        import Frame_JanelaPrincipal
        Frame_JanelaPrincipal.create(None).Show()
        self.Close()

    #Abre o Frame_Evento com Duplo clique no Evento Selecionado
    def OnListCtrl1ListItemActivated(self, event):
        
        EventoSelecionado = self.PegarItemSelecionado()
        
        #Cria e Exibe Tela FRAME_EVENTO, passando como parametro o evento Selecionado
        import Frame_Evento
        Frame_Evento.create(self, EventoSelecionado).Show()
        
    def PegarItemSelecionado(self):
        #Descobre qual foi o Evento Selecionado
        LinhaSelecionada = self.listCtrl1.GetFocusedItem()
        DadosEvento = self.ListaEventos[LinhaSelecionada]
        print DadosEvento
        
        #Pega os dados do Evento Selecionado e Cria um Objeto do tipo Evento
        ID = DadosEvento[0]
        Nome = DadosEvento[1]
        Data = str(DadosEvento[2])
        Horario = str(DadosEvento[3])
        Organizador = self.Usuario
        
        CEI = ConexaoEventoInterface()
        TiposEventos = CEI.carregarTiposDoBanco()
        TiposFaixaEtaria = CEI.carregarClassificacaoDoBanco()
        Tipo = TiposEventos[DadosEvento[5] - 1]
        FaixaEtaria = TiposFaixaEtaria[DadosEvento[4] - 1]
        Url = DadosEvento[-1]
        
        EventoSelecionado = Evento(Nome, Data, Horario, Tipo, Organizador, FaixaEtaria)
        EventoSelecionado.SetUrl(Url)
        EventoSelecionado.SetID(ID)
        
        return EventoSelecionado
        
        

